
class Abc():
    def walk(self):
        print("努力学习走路中。。。。")


class Person(Abc):

    # 类属性
    hand_counts = 2

    # 类的私有属性
    __money = 10000000

    def __init__(self):
        self.eye_counts = 2

    @classmethod
    def talk(cls):
        print("人类都有语言能力。。。")

    @staticmethod
    def eat():
        print("人类生存需要进食。。。")

    def walk(self):
        print("能直立行走！！！！")

    def get_money(self):
        return self.__money

    def __use_money(self, price):
        print("今天消费了{}钱".format(price))
        self.__money -= price
        print("还剩{}钱".format(self.__money))

    def give_money(self, value):
        if value > 200000:
            print("臭小子又败家，这钱你别想从我这儿拿走。")
        else:
            self.__use_money(value)
            return value


class Chinese(Person):
    def show_money(self):
        # 父类的私有属性，不能在子类中被直接使用
        # print("大家快来看看，我有：{}钱".format(self.__money))
        print("大家快来看看，我有：{}钱".format(self.get_money()))

    def use_money(self):
        # 父类的私有方法，子类不能使用
        self.__use_money(100)

    def pull_money(self, value):
        self.__money = self.give_money(value)

    def walk(self):
        # self.walk
        # 调用父类的方法
        # Person.walk(self)
        # super().walk()
        # super(Chinese, self).walk()
        super(Person, self).walk()
        Abc.walk(self)
        print("我不止会走，我还跑得快！")




xiaoming = Chinese()
# 子类能够直接使用父类中的【实例属性】和【实例方法】
print(xiaoming.eye_counts)
xiaoming.walk()

# # 子类能够直接使用父类中的【类属性】和【类方法】
# print(xiaoming.hand_counts)
# xiaoming.talk()
#
# # 子类能够直接使用父类中的【静态方法】
# xiaoming.eat()
#
# xiaoming.show_money()
#
# xiaoming.pull_money(200000)
# xiaoming.use_money()

# print(xiaoming.__money)